### makefile for dvmh
# requires variables: LIBDIR CUDA_PATH MPI_INC CC ar

DVMHOPT  = -DCUDA_INT_OFFSET
CCOPT    = -O3

CFLAGS   = $(DVMHOPT) $(CCOPT) "-I$(CUDA_PATH)/include" -I$(MPI_INC)

OBJ = \
	dvmgpu_copying.o \
	dvmgpu_distribution.o \
	dvmgpu_red.o \
	dvmh_rts.o \
	util.o

all: $(LIBDIR)/dvmh.a

dvmgpu_copying.o: dvmgpu_copying.c util.h
	$(CC) $(CFLAGS) -c -o dvmgpu_copying.o dvmgpu_copying.c
dvmgpu_distribution.o: dvmgpu_distribution.c dvmgpu_distribution.h util.h
	$(CC) $(CFLAGS) -c -o dvmgpu_distribution.o dvmgpu_distribution.c
dvmgpu_red.o: dvmgpu_red.cu dvmgpu_red.h util.h
	"$(CUDA_PATH)/bin/nvcc" $(CFLAGS) -arch=sm_20 -c -o dvmgpu_red.o dvmgpu_red.cu
dvmh_rts.o: dvmh_rts.c util.h system_typ.h system.typ dvmh.h dvmgpu_red.h dvmgpu_distribution.h
	$(CC) $(CFLAGS) -c -o dvmh_rts.o dvmh_rts.c
util.o: util.c util.h
	$(CC) $(CFLAGS) -c -o util.o util.c

$(LIBDIR)/dvmh.a: $(OBJ)
	$(ar) cr $(LIBDIR)/dvmh.a $(OBJ)

clean:
	rm -f $(OBJ)
	rm -f $(LIBDIR)/dvmh.a
